// pages/user/profile/profile.js
import Toast from '@vant/weapp/toast/toast';
const app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    username: '',
    phone: '',
    usernameError: '',
    phoneError: '',
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取缓存中的用户信息
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo) {
      this.setData({
        userInfo,
        username: userInfo.username,
        phone: userInfo.phone || ''
      });
    } else {
      // 未登录，跳转到登录页
      wx.navigateTo({
        url: '/pages/login/login'
      });
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  onUsernameChange(e) {
    const username = e.detail;
    this.setData({ username });

    // 验证用户名
    if (username.trim() === '') {
      this.setData({ usernameError: '用户名不能为空' });
    } else if (username.length < 2) {
      this.setData({ usernameError: '用户名长度不能少于2个字符' });
    } else {
      this.setData({ usernameError: '' });
    }
  },

  onPhoneChange(e) {
    const phone = e.detail;
    this.setData({ phone });

    // 验证手机号（简单验证）
    if (phone && !(/^1[3-9]\d{9}$/.test(phone))) {
      this.setData({ phoneError: '请输入正确的手机号' });
    } else {
      this.setData({ phoneError: '' });
    }
  },

  async saveProfile() {
    // 表单验证
    if (this.data.usernameError || this.data.phoneError) {
      Toast.fail('请完善表单信息');
      return;
    }

    if (this.data.username.trim() === '') {
      this.setData({ usernameError: '用户名不能为空' });
      return;
    }

    this.setData({ loading: true });

    try {
      const res = await new Promise((resolve, reject) => {
        wx.request({
          url: `${app.globalData.baseUrl}/api/users/profile`,
          method: 'PUT',
          header: {
            'Authorization': `Bearer ${wx.getStorageSync('token')}`,
            'Content-Type': 'application/json'
          },
          data: {
            username: this.data.username,
            phone: this.data.phone
          },
          success: resolve,
          fail: reject
        });
      });

      if (res.statusCode === 200 && res.data.success) {
        // 更新本地存储的用户信息
        const userInfo = res.data.data.user;
        wx.setStorageSync('userInfo', userInfo);

        this.setData({
          userInfo,
          loading: false
        });

        Toast.success('保存成功');
      } else {
        Toast.fail(res.data.message || '保存失败');
        this.setData({ loading: false });
      }
    } catch (error) {
      console.error('保存个人信息失败:', error);
      Toast.fail('网络错误，请重试');
      this.setData({ loading: false });
    }
  },

  navigateToPassword() {
    wx.navigateTo({
      url: '/pages/user/password/password'
    });
  }
})